#include <iostream>
#include <string>
#include <stack>

// 函数将10进制实数num转换为指定进制base的字符串表示
std::string decimalToBase(double num, int base, int precision = 10) {
    // 非法输入检查
    if (num < 0 || base < 2 || base > 36) {
        return "Invalid input";
    }

    // 对于0，直接返回"0"
    if (num == 0) {
        return "0";
    }

    // 处理整数部分
    long long intPart = static_cast<long long>(num);
    std::string intPartStr = decimalToBase(intPart, base);

    // 处理小数部分
    num -= intPart;
    std::string decimalStr = ".";
    for (int i = 0; i < precision; ++i) {
        num *= base;
        int digit = static_cast<int>(num);
        decimalStr += (digit < 10) ? ('0' + digit) : ('A' + digit - 10);
        num -= digit;
    }

    return intPartStr + decimalStr;
}

int main() {
    double decimalNumber = 123.456; // 10进制实数
    int base = 16;                 // 目标进制
    int precision = 5;             // 小数部分精度

    std::string result = decimalToBase(decimalNumber, base, precision);
    std::cout << decimalNumber << " in base " << base << " is: " << result << std::endl;

    return 0;
}
